#!/bin/bash
# 功能: 停止森数据服务的脚本，使用时需注意，请结合自身的实际调整 BASE_DIR 变量
# 名称: stop_dix_singlehost.sh
# 作者: zxm
# 创建日期: 2024-11-26
# 版本: v1.0

echo -e "\e[1;33m请在执行脚本前根据实际情况调整临时环境变量设置!\e[0m\n"

# 基础目录
BASE_DIR=/uino

# 服务路径
DICONSOLE_HOME="$BASE_DIR/dix/diconsole"
DISM_HOME="$BASE_DIR/dix/dism"
MySQL_HOME="$BASE_DIR/mysql_tarsier_linux"

# 设置临时环境变量
export JAVA_HOME="$BASE_DIR/jdk_linux"
export JRE_HOME="$JAVA_HOME/jre"
export PATH="$JAVA_HOME/bin:$PATH"
export CLASSPATH=".:$JAVA_HOME/lib:$JRE_HOME/lib"

# 非root执行的检测逻辑
if [ "$(id -u)" = "0" ]; then
    echo -e "\e[1;31m此脚本必须以非root用户身份运行!\e[0m" 1>&2
    exit 1
fi

# 获取服务PID的函数
get_pid() {
    local pid
    pid=$(pgrep -f "$1" | head -n 1) # 只获取第一个PID
    echo "$pid"
}

# 停止服务的函数
stop_service() {
    local service_name="$1"
    local pid="$2"

    if [ -n "$pid" ]; then
        echo "服务 $service_name 存在，它的PID是 $pid"
        kill -15 "$pid"
        if [ $? -eq 0 ]; then
            echo -e "\e[1;32m停止 $service_name 成功\e[0m"
        else
            echo -e "\e[1;31m停止 $service_name 失败\e[0m"
        fi
    else
        echo -e "\e[1;33m服务 $service_name 并不存在，不需要停止\e[0m"
    fi
}

# 停止 diconsole
diconsole_pid=$(get_pid "${DICONSOLE_HOME}")
stop_service "thingx" "$diconsole_pid"

# 停止 dism
dism_pid=$(get_pid "${DISM_HOME}")
stop_service "dism" "$dism_pid"

# 停止 mysql
mysql_pids=$(pgrep -f "${MySQL_HOME}/bin/mysqld") # 获取所有mysql进程
if [ -n "$mysql_pids" ]; then
    for pid in $mysql_pids; do
        stop_service "mysql" "$pid" # 逐个停止
    done
else
    echo -e "\e[1;33m服务 mysql 并不存在，不需要停止\e[0m"
fi
